/**
 * 409. 最长回文串
 */
class Solution1 {
    public int longestPalindrome(String s) {
        int[] nums = new int[127];//输入的字符大小是0-127
        for (int i = 0;i<s.length();i++){
            char ch = s.charAt(i);
            nums[ch]++;
        }
        int flag = 0;
        int ans = 0;
        for (int i = 0;i<127;i++){
            ans +=nums[i] /2 *2;//判断奇偶数
            if (nums[i] %2 != 0){
                flag = 1;
            } 
        }
        int[] ch = {12};
        return ans+flag;
    }
}

/**
 * 405. 数字转换为十六进制数
 */
class Solution2 {
    public String toHex(int num) {
        if (num == 0) return "0";
        char[] arr = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
        StringBuilder ans =new StringBuilder();
        while (num != 0){
            ans.append(arr[num & 15]);// 16进 位
            num = num >>> 4;// 4个二进制 转换一个 16进制
        }
        return ans.reverse().toString();
    }
}

/**
 * 389. 找不同
 */
class Solution3 {
    /**
     *          循环字符串s 统计每个字符的个数，循环字符串t 每出现一次s中的字符 就让相应字符的数量减少1，
     *          如果字符减少到了小于0 则这个字符就是答案
     * @param s
     * @param t
     * @return
     */
    public char findTheDifference(String s, String t) {

        int[] num = new int[26];
        for (int i = 0;i<s.length();i++){
            num[s.charAt(i)-'a']++;
        }
        for (int i = 0;i<t.length();i++){
            num[t.charAt(i) - 'a']--;
            if (num[t.charAt(i) - 'a'] < 0){
                return t.charAt(i);
            }
        }
        return ' ';
    }

    /**
     *              异或 找不同
     * @param s
     * @param t
     * @return
     */
    public char findTheDifference2(String s, String t) {
        char ans = 0;
        for (char c : s.toCharArray()){
            ans ^= c;
        }
        for (char c : t.toCharArray()){
            ans ^= c;
        }
        return ans;
    }
}

/**
 * 374. 猜数字大小
 */

/**
 * Forward declaration of guess API.
 * @param  num   your guess
 * @return 	     -1 if num is lower than the guess number
 *			      1 if num is higher than the guess number
 *               otherwise return 0
 * int guess(int num);
 */

public class Solution extends GuessGame {
    public int guessNumber(int n) {
        int l = 1;
        int r = n;
        while (l < r){
            int mid =l+(r-l)/2;
            if (guess(mid) <= 0){//猜小
                r = mid;// 答案在区间 [left, mid] 中
            }else{//猜大
                l = mid+1;// 答案在区间 [mid+1, right] 中
            }
        }
        // 此时有 left == right，区间缩为一个点，即为答案
        return l;
    }
}